package com.suixun.dao.devicemanage;

import java.util.List;
import java.util.Map;

import com.suixun.entity.DeviceInfo;
import com.suixun.entity.DeviceReserve;
import com.suixun.entity.SimInfo;
import com.suixun.entity.page.PageModel;

/**
 * 
 * @author wb-limeng.g
 *
 */
public interface DeviceInitServiceDAO {

	

	/**
	 * 查询设备列表
	 */
	List<DeviceInfo> queryDeviceInitlist(Map<String,Object> map);
	List<DeviceInfo> queryDeviceInitlistPage(PageModel<?> page);
	List<DeviceInfo> queryDeviceInitlistPageByBox(PageModel<?> page);
	Integer addDevice(Map<String,Object> map);
	
	/**
	 * 删除std_deviceinfo
	 */
	Integer deleteDevice(int id);
	
	/**
	 * 更新std_iot_device表中的学校为空，status置为未使用
	 */
	Integer updateDevice(Map<String,Object> map);
	/**
	 * <p>Title: updateDeviceList</p>
	 * <p> 功能描述:更新devicelists表 </p>
	 * @param map
	 * @return
	 */
	Integer updateDeviceList(Map<String,Object> map);
	/**
	 * 通过imei或imeiList修改std_iot_deivce表
	 * @param map
	 * @return
	 */
	Integer updateIotDeviceByImei(Map<String,Object> map);

	/**
	 * 通过imei或imeiList回收表std_iot_device
	 * @param map
	 * @return
	 */
	Integer recycleIotDeviceByImei(Map<String,Object> map);
	
	/**
	 * 查询总行数
	 */
	Integer countRows(PageModel<?> page);
	Integer countRowsByBox(PageModel<?> page);
	Integer countBoxRows(PageModel<?> page);
	
	DeviceInfo queryDeviceByName(DeviceInfo device);
	Integer queryUsedDeviceCounts(DeviceInfo device);
	DeviceInfo queryDeviceByID(DeviceInfo device);
	Integer putDevice(DeviceInfo device);
	Integer putDeviceByBox(DeviceInfo device);
	/**
	 * 
	 * <p>Title: countAllRows</p>
	 * <p> 功能描述:查询全部设备个数 </p>
	 * @return
	 */
	Integer countAllRows();
	/**
	 * 
	 * <p>Title: createTmpTable</p>
	 * <p> 功能描述:创建临时表 </p>
	 */
	void createTmpTable();
	
	/**
	 * 
	 * <p>Title: dropTmpTable</p>
	 * <p> 功能描述:删除临时表 </p>
	 */
	void deleteTmpTable();
	/**
	 * 创建临时重复表
	 */
	void createRepeatTable();
	
	/**
	 * <p>Title: deleteRepeatTable</p>
	 * <p> 功能描述:删除临时重复表 </p>
	 */
	void deleteRepeatTable();
	
	/**
	 * <p>Title: queryRepeatTable</p>
	 * <p> 功能描述:查询临时重复表 </p>
	 * @return
	 */
	List<DeviceInfo> queryRepeatTable();
	/**
	 * 
	 * <p>Title: queryIotDeviceIsExist</p>
	 * <p> 功能描述:查询std_iot_device表 </p>
	 * @param map
	 * @return
	 */
	List<DeviceInfo> queryIotDeviceIsExist(Map<String,Object> map);
	/**
	 * 
	 * <p>Title: queryDeviceListIsExist</p>
	 * <p> 功能描述:查询devicelists表 </p>
	 * @param map
	 * @return
	 */
	List<DeviceInfo> queryDeviceListIsExist(Map<String,Object> map);
	/**
	 * 
	 * <p>Title: addDeviceTmp</p>
	 * <p> 功能描述:添加临时表数据 </p>
	 * @param map
	 * @return
	 */
	Integer addDeviceTmp(Map<String,Object> map);
	/**
	 * 
	 * <p>Title: addStdIotDevice</p>
	 * <p> 功能描述:添加数据到std_iot_device表 </p>
	 * @param map
	 * @return
	 */
	Integer addStdIotDevice(Map<String,Object> map);
	/**
	 * 
	 * <p>Title: addDeviceList</p>
	 * <p> 功能描述:添加数据到devicelists表  </p>
	 * @param map
	 * @return
	 */
	Integer addDeviceList(Map<String,Object> map);
	/**
	 * 
	 * <p>Title: queryDeviceTmp</p>
	 * <p> 功能描述:查询临时表数据 </p>
	 * @param page
	 * @return
	 */
	List<DeviceInfo> queryDeviceTmp(PageModel<?> page);
	
	/**
	 * <p>Title: querySimTmpRows</p>
	 * <p> 功能描述:查询临时表数据总行数 </p>
	 * @return
	 */
	Integer queryDeviceTmpRows();
	/**
	 * <p>Title: queryIotDeviceTmpIsBind</p>
	 * <p> 功能描述:查询临时表数据在std_iot_device中是否已被绑定 </p>
	 * @param map
	 * @return
	 */
	List<DeviceInfo> queryIotDeviceTmpIsBind();
	/**
	 * <p>Title: queryDeviceListTmpIsBind</p>
	 * <p> 功能描述:查询临时表数据在devicelists中是否已被绑定  </p>
	 * @param map
	 * @return
	 */
	List<DeviceInfo> queryDeviceListTmpIsBind();
	
	Integer deleteIotDeviceTmpInIotDevice();
	
	Integer deleteDeviceListTmpInDeviceList();
	/**
	 * 导入std_iot_device
	 * @return
	 */
	Integer importStdIotDevice();
	/**
	 * 导入到devicelists
	 * @return
	 */
	Integer importDevicelists();
	/**
	 * 查询索引
	 * @return
	 */
	Integer queryTempIndex();
	/**
	 * 添加索引
	 * @return
	 */
	int addTempIndex();
	
	List<DeviceReserve> selectDeviceReserve(Map<String,Object> map);
	
	Integer addDeviceReserve(Map<String,Object> map);
	
	Integer updateIotDevice(Map<String,Object> map);
	
}
